GtkApplication: Fix two muxer-related memory leaks
authorKalev Lember <kalevlember@gmail.com>
Mon, 19 May 2014 11:19:11 +0000 (13:19 +0200)
committerKalev Lember <kalevlember@gmail.com>
Sun, 25 May 2014 08:49:27 +0000 (10:49 +0200)
Drop the ref on the action muxer in finalize, and also make sure
shutdown() tears down the muxer setup done in startup().

When GtkApplication adds itself to a muxer, it causes the muxer to take
a ref on the GtkApplication. This has to be undone in shutdown() to make
sure the GtkApplication doesn't end up holding a ref on itself.

https://bugzilla.gnome.org/show_bug.cgi?id=730383

gtk/gtkapplication.c

index a777ec61e09c27b284d1451f2bce052f9c637089..a8b99811c2f95a18e49e3ee433f9113df19d7681 100644 (file)
@@ -522,6 +522,8 @@ gtk_application_shutdown (GApplication *g_application)
   gtk_application_impl_shutdown (application->priv->impl);
   g_clear_object (&application->priv->impl);
 
+  gtk_action_muxer_remove (application->priv->muxer, "app");
+
   /* Keep this section in sync with gtk_main() */
 
   /* Try storing all clipboard data we have */
@@ -767,6 +769,7 @@ gtk_application_finalize (GObject *object)
 
   g_clear_object (&application->priv->app_menu);
   g_clear_object (&application->priv->menubar);
+  g_clear_object (&application->priv->muxer);
 
   accels_finalize (&application->priv->accels);